package com.training1.core.modules.dao;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import com.training1.core.common.dao.CrudDao;
import com.training1.core.common.dao.annotation.MyBatisDao;
import com.training1.core.entity.MemberEntity;
import com.training1.core.entity.MessageEntity;

@MyBatisDao
public interface MemberDao extends CrudDao<MemberEntity>{
	
	/**
	 * 获取黑名单flg
	 */
	String findFlg(String cellphone,String oldPassword);
	/**
	 * 更新会员密码,更新时间,更新人
	 */
	void updateLoginPassword(String cellphone,String oldPassword,String newPassword);
	/**
	 * 更新手机端TOKEN
	 * @param {loginToken,id}
	 * @return
	 */
	int updateToken(Map<String, Object> param);
	
	/**
	 * 根据token获取手机端
	 * @param {loginToken,expiration(过期时间，例:2小时=2*60*60)}
	 * @return
	 */
	MemberEntity getToken(Map<String, Object> param);
	
	/**
	 * api接口 查找用户
	 * @param param
	 * @return
	 */
	MemberEntity findMember(Map<String, Object> param);
	/**
	 * api接口 更新密码
	 * @param param
	 * @return
	 */
	void updatePassword(Map<String, Object> param);

	/**
	 * 查找会员id
	 * @param cellPhone
	 */
	Integer findMemberCount(Map<String, Object> param);
	
	/**
	 * 根据推荐人手机号查询推荐人姓名
	 */
	MemberEntity findMemberByRecommender(String param);
	
	/**
	 * 根据手机号获取会员信息
	 */
	MemberEntity findMemberByCell(String param);
	/**
	 * 
	 * @param cellphone
	 * @return
	 */
	MemberEntity getMember(String cellphone);
	
	/**
	 * 根据手机号更新
	 * @param member
	 * @return
	 */
	int updateByCell(MemberEntity member);

	/**
	 * 根据手机号获取会员名,推荐人手机号及姓名
	 * @return
	 */
	Map<String,String> getDetialByCell(String cellPhone);
	
	/**
	 * 更新收益
	 * @return
	 */
	int updateEarnings(Map<String, Object> param);
	
	/**
	 * 地址更新为非默认
	 * 存地址
	 * 更新地址
	 */
	void updateAdd(MemberEntity entity);
	void insertAdd(MemberEntity entity);
	void updateAllAdd(MemberEntity entity);
	//账户调整
	MemberEntity gett(Integer id);
	
	List<MemberEntity> findexportList(Map<String, Object> param);
	
	// 取得会员可提现金额
	BigDecimal getMemberAvaibleCash(String cellPhone);
	
	//批量更新黑名单
	void findMemberListById(Map<String, Object> param);
	//批量托管,取消托管
	void updateMemberTrust(Map<String, Object> param);
	//账户调整的保存
	void updateAcc(MemberEntity memberEntity);

	List<MemberEntity> findBatch(List<String> list);

	int updateBatch(List<MemberEntity> memList);
	/**
	 * api接口 根据手机号码  查询会员信息
	 * @param param
	 * @return
	 */
	MemberEntity findMemberByPhone(Map<String, Object> param);
	
	/**
	 * 查询代理权数量
	 * @param param
	 * @return
	 */
	MemberEntity findCardCount(Map<String, Object> param);
	
	int updateCash(MemberEntity mem);
	
//会员账户
	List<MemberEntity> findAccountList(Map<String,Object> param);
	MemberEntity findSUMList(Map<String,Object> param);
	
	
	//注册会员api
	int insertMessage(MessageEntity register);//验证码
	int insertMember(MemberEntity memberEntity);//保存会员
}
